/* 27.用英文逗号替换掉中文逗号
'18438622907，18438622908'
'18438622907,18438622908'
用英文逗号替换所有的中文逗号
'18438622907，18438622908，18438622909'
'18438622907,18438622908,18438622909' */
var str = "18438622907，18438622908";
str = str.replace("，", ",");
console.log(str);
// replace只会替换匹配到的第一个值
var str = "18438622907，18438622908，18438622909";
str = str.replace(/，/g, ",");
console.log(str);
/* .replace(/\//g, '')的作用是把所有的 / 替换为空
格式为：/ pattern /[switch]
pattern就是要替换的字符串
[switch]有三个常用值：
g：代表全局匹配
i：代表忽略大小写
gi：代表全局匹配+忽略大小写
[switch]为空的话只匹配第一个符合表达式的值 
所以 /\//g 就是指 所有的 \/，就是 / 前面加个转义符号*/

// 26.浏览器控制台输出乱码
// 在js引入时加入charset='utf-8'
<script src="./index.js" charset="utf-8"></script>;

/* 25.获取今天是星期几
 */
var day = new Date().getDay();
switch (day) {
  case 0:
    console.log("星期日");
    break;
  case 1:
    console.log("星期一");
    break;
  case 2:
    console.log("星期二");
    break;
  case 3:
    console.log("星期三");
    break;
  case 4:
    console.log("星期四");
    break;
  case 5:
    console.log("星期五");
    break;
  case 6:
    console.log("星期六");
    break;
  default:
    console.log(day + ":日期有误");
}

/* 24.IE上判断某个数据是不是数组中的元素
[1, 2, 3]
2 in [1, 2, 3]
 */
var arr = [1, 2, 3];
if (arr.indexOf(2) !== -1) {
  console.log("2 in arr");
} else {
  console.log("2 not in arr");
}

/* 23.截取数组从第二个位置，长度为3的子串
"1cwb2"
'cwb'
*/
var arr = "1cwb2";
var child_arr = arr.substr(1, 3);
console.log(child_arr);

/* 1.过滤数组中符合要求的元素，组成一个新数组
[1,2,3,4]
[3,4] */
var arr = [1, 2, 3, 4];
var new_arr = arr.filter((item) => {
  if (item > 2) {
    return true;
  }
});
console.log(new_arr);
// 2.var const let的区别
// var 定义变量 在定义后的全局和块作用域都能取到,在函数内的仅在函数内有效
var a = 1;
console.log("a: ", a);
{
  console.log("a: ", a);
}
function whatA() {
  console.log("a:", a);
  var a = 2;
  console.log("a:", a);
}
whatA();
console.log("a:", a);
// let 只在{}块级作用域中有效，if和for也认为是{}，也不能重复声明
{
  let a = 1;
  console.log("a:", a);
}
console.log("a:", a);
/* a: 1
E:\test_project\myManual\JavaScript\js问题.js:19
console.log('a:', a)
                  ^

ReferenceError: a is not defined */
// const 定义常量，值不能改变，它是个引用，若是对象，对象属性值可以改变
const FIVE_SECOND = 5;
console.log(FIVE_SECOND);
FIVE_SECOND = 6;
/* E:\test_project\myManual\JavaScript>node js问题.js
5
E:\test_project\myManual\JavaScript\js问题.js:17
FIVE_SECOND = 6;
            ^

TypeError: Assignment to constant variable. */

/* 3.将一个字符串按用某个字符分割成多个字符串，组成一个数组
"123/测试/专用"
[ '123', '测试', '专用' ] */
var str = "123/测试/专用";
var arr = str.split("/");
console.log(arr);
/* 4.向数组末尾添加一个元素
[1,2]
[1,2,3] */
var arr = [1, 2];
arr.push(3);
console.log(arr);
/* 5.获取当前年
2020 */
var a = new Date().getFullYear();
console.log(a);
/* 6.获取当前月
4 
如果小于10月显示0*，大于等于10月正常显示
04
11
*/
var month = new Date().getMonth() + 1;
console.log(month);
if (month < 10) {
  month = "0" + month;
}
console.log(month);
/* 7.获取当前日,是几号
21
如果日期小于10号显示0*
02 */
var date_day = new Date().getDate();
console.log(date_day);
console.log("------------");
if (date_day < 10) {
  date_day = "0" + date_day;
}
console.log(date_day);
/* 8.字符串拼接年月日
20200421 */
var obj_date = new Date();
var full_year = obj_date.getFullYear();
var full_month = obj_date.getMonth() + 1;
if (full_month < 10) {
  full_month = "0" + full_month;
}
var full_date = obj_date.getDate();
if (full_date < 10) {
  full_date = "0" + full_date;
}
var ymd = full_year + full_month + full_date;
console.log(ymd);
/* 9.获取数组长度
[1,2]
2 */
var arr = [1, 2];
console.log(arr.length);
/* 10.对数组中每一个对象的属性进行码值转换，并替换原数组
[{currency:'1'},{currency:'2'},{currency:'3'}]
[ { currency: '一' }, { currency: '二' }, { currency: '三' } ] */
var arr_obj = [{ currency: "1" }, { currency: "2" }, { currency: "3" }];
arr_obj.map((item) => {
  switch (item.currency) {
    case "1":
      item.currency = "一";
      break;
    case "2":
      item.currency = "二";
      break;
    case "3":
      item.currency = "三";
      break;
    default:
      console.log("未找到码值转换");
      break;
  }
});
console.log(arr_obj);
/* 11.字符串转数字
"11.11"
11.11 */
var str = "11.11";
var num = str * 1;
console.log(num);
console.log(typeof num);
/* 12.把一个JSON字符串转成对象
'{"id":1,"name":"cwb"}'
{id:1,name:"cwb"}
*/
var str = '{"id":1,"name":"cwb"}';
var obj = JSON.parse(str);
console.log(obj);
/* 13.将数组中的元素用同一个方法处理一遍,
将数组中的元素都加1，打印输出
[1,2,3]
2
3
4 */
var arr = [1, 2, 3];
arr.forEach((item) => {
  console.log(item);
});
/* 14.设置定时器，每两秒输出一个2，输出三次停止
2
2
2 
放浏览器里执行*/
var flag = 0;
var timer = setInterval(() => {
  console.log("2");
  flag = flag + 1;
  if (flag == 3) {
    clearInterval(timer);
  }
}, 2000);
/* 15.将数组拼接成一个字符串
[1,2,3]
1,2,3
将数组元素以指定字符串拼接成一个字符串
1->2->3 */
var arr = [1, 2, 3];
var arr_join = arr.join();
console.log(arr_join);
var arr_join_ = arr.join("->");
console.log(arr_join_);
/* 16.截取字符串后半截
一个正向截，一个反向截
1234
34
截取字符串的子串
1234
23 */

var str = "1234";
var _str = str.substring(2);
console.log(_str);
var center_str = str.substring(1, 3);
console.log(center_str);
// substring不支持负索引会变成0
console.log(str.substring(-2));
// slice支持负索引
console.log(str.slice(2));
console.log(str.slice(-2))
console.log(str.slice(1, -1));

/* 17.截取数组后半截的元素组成一个数组
[1,2,3,4]
[3,4]
截取数组中间几个元素组成一个数组
[1,2,3,4]
[3,4] */
var arr = [1, 2, 3, 4];
var arr_ = arr.slice(2);
console.log(arr_);
var arr_23 = arr.slice(1, 3);
console.log(arr_23);
/* 18.检测一个数据是否符合正则表达式，符合是true，否则是false
写一个手机号的正则表达式
^[1][3-9][0-9]{9}$
18438622907@
false */
var phone = new RegExp("^[1][3-9][0-9]{9}$");
var isOK = phone.test("18438622907@");
console.log(isOK);
/* 19.判断数组中是否含有给定的元素，有返回true，没有返回false
[1,2,3,"a"]
是否有1
true
是否有"1"
false
是否有"a"
true */
var arr = [1, 2, 3, "a"];
console.log(arr.includes(1));
console.log(arr.includes("1"));
console.log(arr.includes("a"));
/* 20.把对象转换成字符串对象
键加双引号，括号加双引号
{id:1}
"{"id":1}"
浏览器 */
var obj = { id: 1 };
undefined;
JSON.stringify(obj);
// "{"id":1}"
/* 21.对数组元素进行排序,升序改变元素组
[3,1,2]
[1,2,3] 
降序
[3,1,2]
[3,2,1]
通过函数升序
[3,1,2]
[1,2,3] 
通过函数降序
[3,1,2]
[3,2,1]
*/
var arr = [3, 1, 2];
arr.sort();
console.log(arr);
arr.reverse();
console.log(arr);
arr.sort((a, b) => {
  return a - b;
});
console.log(arr);
arr.sort((a, b) => {
  return b - a;
});
console.log(arr);
/* 22.拼接数据内容
[1,'a',2,'b']
1a2b */
var arr = [1, "a", 2, "b"];
var out = "";
for (var i = 0; i < arr.length; i++) {
  out += arr[i];
}
console.log(out);
